package in.view.holder;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import in.lib.utils.Views;
import in.lib.utils.Views.InjectView;
import in.lib.utils.Views.Injectable;
import in.lib.view.AvatarImageView;
import in.lib.view.FlowLayout;
import in.lib.view.LinkedTextView;
import in.lib.view.TextChronometer;
import in.model.Interaction;
import in.model.Interaction.Type;
import in.model.Post;
import in.model.User;
import in.rob.client.R;
import in.view.holder.base.Holder;
import lombok.Getter;
@Injectable
public class InteractionPostHolder extends Holder<Interaction>
{
@Getter @InjectView(R.id.user_container) protected FlowLayout userContainer;
@Getter @InjectView(R.id.post_text) protected LinkedTextView postText;
@Getter @InjectView(R.id.date) protected TextChronometer date;
@Getter @InjectView(R.id.icon) protected ImageView icon;
public InteractionPostHolder(View view)
{
super(view);
}
@Override public void populate(Interaction model)
{
date.setTime(model.getDate());
postText.setText(((Post)model.getObject()).getPostText());
postText.setLinkMovementMethod();
icon.setImageResource(model.getType().getIcon());
userContainer.removeAllViews();
int count = model.getUsers().size();
for (User user : model.getUsers())
{
if (count > 1)
{
AvatarImageView userStub = (AvatarImageView)LayoutInflater.from(userContainer.getContext()).inflate(R.layout.interaction_avatar_stub, userContainer, false);
userStub.setUser(user);
userContainer.addView(userStub);
}
else
{
View userStub = LayoutInflater.from(userContainer.getContext()).inflate(R.layout.interaction_stub, userContainer, false);
userContainer.addView(userStub);
UserStubHolder holder = new UserStubHolder(userStub);
holder.populate(user);
if (model.getType() == Type.REPOST)
{
holder.actionText.setText("Reposted by");
}
else if (model.getType() == Type.STAR)
{
holder.actionText.setText("Starred by");
}
}
}
}
@Injectable
protected static class UserStubHolder
{
@Getter @InjectView protected TextView usernameTitle;
@Getter @InjectView protected TextView usernameSubtitle;
@Getter @InjectView protected AvatarImageView avatar;
@Getter @InjectView protected TextView actionText;
public UserStubHolder(View v)
{
Views.inject(this, v);
}
public void populate(User user)
{
avatar.setUser(user);
usernameTitle.setText(user.getFormattedMentionNameTitle());
usernameSubtitle.setText(user.getFormattedMentionNameSubTitle());
}
}
}